package com.dify.tool.api.dto;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.HashMap;

/**
 * @Author: cmd
 * @Date: 2025-07-18
 * @Description: dify发起会话实体类
 **/
@Accessors(chain = true)
@Data
public class DifyMessageSendDTO implements Serializable {

    /**
     * 用户输入/提问内容。
     */
    private String query;

    /**
     * streaming 流式模式（推荐）。基于 SSE（Server-Sent Events）实现类似打字机输出方式的流式返回。
     * blocking 阻塞模式，等待执行完毕后返回结果。（请求若流程较长可能会被中断）。 由于 Cloudflare 限制，请求会在 100 秒超时无返回后中断。
     */
    private String response_mode = "streaming";

    /**
     * 允许传入 App 定义的各变量值。 inputs 参数包含了多组键值对（Key/Value pairs），每组的键对应一个特定变量，每组的值则是该变量的具体值。 如果变量是文件类型，请指定一个包含以下 files 中所述键的对象。 默认 {}
     */
    private Object inputs = new HashMap<>();


    /**
     * 用户标识，用于定义终端用户的身份，方便检索、统计。 由开发者定义规则，需保证用户标识在应用内唯一。服务 API 不会共享 WebApp 创建的对话。
     */
    private String user = "abc-123";


    /**
     * （选填）会话 ID，需要基于之前的聊天记录继续对话，必须传之前消息的 conversation_id。
     */
    private String conversation_id;


    public DifyMessageSendDTO(String query) {
        this.query = query;
    }
}
